package org.larkdoc.service;

import java.util.List;

import org.larkdoc.model.entity.DocRelease;

/**
 * 文档版本信息的相关服务
 * 
 * @author LiBin
 * @version [v1.0.1, 2017年9月22日]
 * @see [相关类/方法]
 * @since [产品/模块版本]
 */

public interface DocReleaseService {
    
    /**
     * 新增记录
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:16:13
     */
    int insert(DocRelease record);
    
    /**
     * 新增记录:只记录对象非空属性
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:16:27
     */
    int insertSelective(DocRelease record);
    
    /**
     * 发布文档的新版本
     * 
     * @param record
     *            版本信息
     * @return [参数说明]
     * 
     * @return int [返回类型说明]
     * @exception throws [违例类型] [违例说明]
     * @see [类、类#方法、类#成员]
     */
    int versionRelease(DocRelease record);
    
    /**
     * 根据文档ID和版本好检查是否存在。
     * 
     * @param record
     * @return
     * 
     * @returns int
     * @see [类、类#方法、类#成员]
     * @author tmmk[zhangpeijun1024@qq.com]<br/>
     *         2017年9月24日上午11:51:57
     */
    boolean checkExists(DocRelease record);
    
    /**
     * 根据文档id查询版本信息 <br>
     * 有用户权限控制
     * @param docId 文档ID
     * @param account 用户帐号
     * @return
     * 
     * @returns List<DocRelease>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午4:12:00
     */
    List<DocRelease> getDocReleasesByDocId(Integer docId, String account);
    
    /**
     * 根据文档id和发布版本号 查询版本信息 <br>
     * 有用户权限控制
     * 
     * @param docId
     * @param versionNo
     * @return [参数说明]
     * 
     * @return DocRelease [返回类型说明]
     * @see [类、类#方法、类#成员]
     */
    DocRelease getDocReleasesByDocIdAndVersion(Integer docId, String versionNo);
    
    /**
     * 根据文档id，获取历史版本
     * @param docId
     * @return
     * 
     * @returns List<DocRelease>
     * @see [类、类#方法、类#成员]
     * @author  zhangpeijun[zhangpeijun1024@qq.com]<br/>
     *          2017年10月17日下午3:17:08
     */
    List<DocRelease> getHistory(Integer docId);
}
